بازار بزرگ اپلیکیشنهای موبایل و سیر صعودی توسعه و تولید آنها، مدیران، سازمانها و وب سایتها را ترغیب کرده است تا برای حضور در این بازارها و معرفی خود و محصولاتشان دست بکار شوند.
شاید شما برای تولید یک اپلیکیشن زمان و هزینههای زیادی صرف کنید ولی در نهایت بازخوردی که انتظارش را داشتیتد، محقق نشود.
برای داشتن یک اپلیکیشن موفق که میتواند دنیایی جدید برای کسب و کار را فراهم کند نکاتی وجود دارد که توجه به آنها در طول ساخت یک اپلیکیشن میتواند کمک شایانی به نتیجه خروجی آن کند.
روند تولید اپلیکیشن دارای چند رویکرد است که نظرات و انتقادات گوناگونی هم در قبال آنها وجود دارد:
۱. اپلیکیشنهای بومی (Native Application)
۲. اپلیکیشنهای ترکیبی (Hybrid Application)
۳. وب اپها یا همان برنامههای تحت وب (Web Apps)
بعد از معرفی زبان HTML۵ نبرد سنگینی بین برنامههای ترکیبی در مقابل برنامههای بومی شکل گرفت، توسعه دهندگان و تحلیلگران از جنبههای گوناگون در دفاع از مزایا و معایب این روشها، استدلالهای گوناگونی را برای به چالش کشیدن تولید یک اپلیکیشن منحصر به فرد برای نمایش در سیستم عاملهای مختلف ارائه کردند.
موسسه فورستر در سال ۲۰۱۳ بر اساس یک نظرسنجی از بین ۳۷۸ توسعه دهنده موبایل در آمریکای شمالی اعلام کرد که ۴۱ درصد از آنها وقت خود را برروی پروژههای بومی و ۲۴ درصد برروی بهینه سازی وب سایتها برای نمایش در تلفنهای همراه (تولید صفحات واکنشگرا) و ۳۵ درصد وقت خود را برروی برنامههای ترکیبی گذراندهاند.
جالب است بدانید که موسسه گارتنر اعلام کرده بود که تا پایان سال ۲۰۱۳ تلفن همراه بعنوان رایجترین وسیله برای دسترسی وب و خدمات مبتنی بر آن از رایانههای شخصی پیشی خواهد گرفت.
- نرم افزارهای بومی
توسعه و ایجاد اپلیکیشن در نرم افزارهای بومی، با توجه به نوع سیستم عامل متفاوت است و با استفاده از یک پایگاه کد جداگانه و زبان خاص همان پلتفرم SDK تولید خواهد شد، بعنوان مثال در سیستم عامل iOS که مختص شرکت اپل است از زبان Objective c یا در سیستم عامل آندروید از زبان Java برای توسعه اپلیکیشنها استفاده میشود.
در واقع برنامههای بومی، اپلیکیشنهایی اختصاصی هستند که برای هر پلتفرم به طور جداگانه توسعه مییابند. برنامه معروف iTunes Store یکی از قدیمی ترین برنامههای بومی و اصلی در سیستم عامل iOS اپل است.
دلایل متعددی میگوید که این رویکرد بهینهتر و کارآمدتر از دیگر شیوههای پیش رو است. برندهای مطرح در حوزه وب هم این رویکرد را تصدیق کردهاند. مارک زاکربرگ مدیرعامل شرکت فیس بوک در آخرین بیانیه خود در سال ۲۰۱۲ اعلام کرد که بزرگترین اشتباه شرکت ما در تدوین استراتژی تلفنهای همراه سرمایه گذاری بروی HTML۵ به جای اپلیکیشنهای بومی بود. برنامههای بومی با ظهور فروشگاه اپلیکیشن اپل و آندروید وارد فضای جدیدی از رقابتها شدند که تا امروز این رقابت بین این دو فروشگاه اپلیکیشن از سایر رقبا بیشتر است.
- ویژگیهای برنامههای بومی
۱. در توسعه و برنامه نویسی برای اپلیکیشنهای بومی از کتابخانه ردهها (کلاسها) و متدهای خاص زبان برنامه نویسی آن پلتفرم استفاده میشود که به همین علت برنامه مورد نظر با سرعت بالاتری پردازش میشود.
۲. از سویی دیگر میتوان از رابط کاربری قویتر و غنیتری بهره برد زیرا کدهای ما در این گونه از برنامهها برمبنای Core Graphics همان دستگاه رندر میشود و خود این عامل سبب میشود که ۱۰ تا ۱۵ درصد مصرف باتری دستگاه هم کاهش یابد. این تفاوت گرافیکی در بازیها بسیار محسوس خواهد بود.
۳. در برنامههای بومی این امکان فراهم میشود که از تمام قابلیتهای یک دستگاه استفاده کرد (..., Api, Sensor) که خود همین امکان موجب استفاده بهینه از امکانات سخت افزاری دستگاه میشود.
۴. سایت معروف Mobithinking در یکی از مطالب خود نکته جالبی را در ارتباط با برنامههای بومی میآورد: برنامههای بومی در صفحه اصلی تلفن همراه یک کاربر زندگی میکنند و این برابر است با انفجار تعامل بیشتر کاربر با برندها در طول زمان استفاده از تلفن همراه.
مجموع موارد فوق سبب میشود که اپلیکیشنهای بومی تجربه کاربری بهتر و موفقتری نسبت به برنامههای ترکیبی خواهند داشت.
- معایب برنامههای بومی
۱. به دلیل متفاوت بودن هر پلتفرم و همچنین نیاز به دانش تخصصی برای هر کدام از آنها در جهت توسعه یک اپلیکیشن، دارای هزینه نسبتا بالایی هستند. به عنوان نمونه پلتفرمهای iOS و آندروید قریب به ۹۰ درصد سهم بازار تلفنهای همراه هوشمند را از آن خود کردهاند.
۲. انتشار نرم افزار فقط در فروشگاههای همان پلتفرم امکان پذیر خواهد بود.
۳. مشکلات و سختیهای ثبت اپلیکیشن در فروشگاههای جهانی برای توسعه دهندگان ایرانی از جمله معایب دیگر است.
۴. برخی از کارشناسان در حوزه امنیت تلفنهای همراه معتقدند که بسیاری از اپلیکیشنهایی که دادهها و اطلاعات خود را بر روی حافظه دستگاه نگهداری میکنند ناامن خواهند بود، زیرا در صورت مفقود شدن تلفن همراه تمام اطلاعات بهمراه آن خواهد بود و تقریبا هیچ راهی برای بازگشت یا از بین بردن آنها وجود ندارد این درصورتی است که برنامههای چند پلتفرمی این گونه نیستند.
- برنامههای ترکیبی
برنامههای ترکیبی از عناصر و فناوریهای اپلیکیشنهای بومی و زبان نوظهور HTML۵ بهمراه CSS و جاوااسکریپت استفاده میکنند و با بهره گیری از اینترنت وظایف خاص خود را به نتیجه می رسانند.
در واقع برنامه ترکیبی به نوعی یک تعادل بین برنامههای مبتنی بر وب (Web apps) و برنامههای بومی خواهند بود. تکنولوژیهایی نظیر jQuery Mobile و Backbone.js و ... وجود دارد که بمنظور تسهیل در امر توسعه برنامههای ترکیبی به کمک توسعه دهندگان میآیند.
از معروفترین این برنامهها، اپلیکیشن Walgreens است که تا زمان نگارش این مطلب جزو برنامههای ترکیبی به حساب میآید.
موسسه گارتنر اعلام کرده است انتظار میرود تا سال ۲۰۱۶ بیش از نیمی از برنامههای کاربردی تلفنهای همراه از نوع ترکیبی باشند.
برنامههای ترکیبی نزد سازمانها و کمپانیهای بزرگ از محبوبیت زیادی برخوردارند زیرا اغلب این سازمانها ترجیح میدهند اپلیکیشن خود را یکبار برای همیشه برای تمام پلتفرمها ارائه کنند.
یکی از فریمورکهای معروف برای توسعه برنامههای ترکیبی PhoneGap نام دارد. توسعه دهنده با این فریمورک میتواند اپلیکیشن مورد نظر را برای چندین سیستم عامل توسعه دهد تا بروی اکثر تلفنهای هوشمند قابل اجرا باشد، مانند: iOS - Android - Blackberry
در واقع Phonegap کتابخانهای است که با قابلیتهای بومی بسته بندی شده است. این فریمورک Webview پلتفرمهای مورد نظر را شناسایی میکند و توابع خود را به همراه دستورات سمت کاربر برروی آنها اجرا میکند.
فریمروک دیگر Titanium است که نظیر PhoneGap عمل میکند با این تفاوت که با یک فایل جاوا اسکریپت Webview مورد نظر را شناسایی خواهد کرد.
با کمی جستجو در وب فریمورکهای زیادی در این زمینه میتوان یافت.
برخی افراد درپارهای از مواقع برنامههای ترکیبی را با برنامههای وب یکی میدانند که این درست نیست. در خیلی از محافل و مطالب از این برنامهها با نام بین پلت فرمی هم یاد میشود.
- ویژگیهای برنامههای ترکیبی
۱. قابلیت نصب اپلیکیشن بروی پلتفرمهای مختلف نظیر : iOS، آندروید، ویندوز موبایل و ...
۲. استفاده از یک پایگاه کد واحد برای همه سیستم عاملهای رایج تلفن همراه هوشمند.
۳. صرفه جویی در زمان و هزینههای توسعه برنامه.
۴. تمام اطلاعات برنامه بر روی پایگاه دادهها قرار دارد نه بر روی یک حافظه داخلی دستگاه.
- معایب برنامههای ترکیبی
۱. عدم دسترسی به امکانات کامل دستگاه (برنامههای ترکیبی تنها زیرمجموعهای از قابلیتهای گنجانده شده در هر پلتفرم بومی را پشتیبانی میکند، هنگامی که یک ویژگی و تکنولوژی جدید معرفی میشود توسعه دهندگان برنامه باید صبر کنند تا بر اساس (CPT (Cross Platform Tools این ویژگیهای جدید را تعریف کنند.
۲. نیاز مبرم به آگاهی و دانش کافی نسبت به زبانهای HTML۵ و CSS و Javascript.
۳. عملکرد نسبتا ضعیف WebView بر روی پلتفرمهای گوناگون.
۴. عدم پشتیبانی از رابط کاربری بومی و ویجتها (در برنامههای چند پلتفرمی بدلیل اینکه رابط کاربری برای هر پلتفرمی بازسازی میشود تجربه کاربری نسبتا خوبی نخواهند داشت.)
۵. در برخی از پلتفرمها توابع مورد استفاده سبب بالا رفتن مصرف CPU و همچنین نشت حافظه (Memory Leak) خواهد شد.
۶. در برنامههای ترکیبی همگرایی بر روی یک محیط توسعه همراه با گرافیک است، به همین دلیل عمدتا با صفحه نمایش رتینا سازگار نخواهند بود.
۷. ضرورت اتصال به اینترنت در زمان استفاده از این اپلیکیشنها.
- وب اپها یا برنامههای تحت وب
وب اپها یا برنامههای تحت وب در واقع اپلیکیشن واقعی نیستند که بر روی تلفن همراه نصب شوند و ماموریت خاصی را دنبال کنند بلکه همان صفحات رایج وب سایتها هستند که در مرورگرها قابل مشاهدهاند با این تفاوت که برای دیده شدن بر روی تلفنهای همراه بهینهسازی خواهند شد و اغلب محتوا محور هستند، زیرا امکان این که دستوراتی را بپذیرند و پاسخی دریافت کنند، نخواهند داشت.
در حال حاضر وب سایتهایی که صفحات واکنشگرا (Responsive) دارند جزو این دسته به حساب میآیند. برای طراحی و توسعه این صفحات میتوان از فریمورکهایی نظیر Bootstrap Twitter یا Gumby استفاده کرد. در طراحی واکنش گرا تاکید بر استفاده از واحد مقیاس درصد بجای مقیاس پیکسل است و صفحاتی که بر این مبنا توسعه مییابند قابلیت تغییر اندازه عناصر صفحه بر روی موبایلها و تبلتها را دارند.
- نتیجه
توسعه اپلیکیشنهای تلفن همراه هدفیست که بطور مداوم در حال حرکت و پیشرفت است و به طبع آن روشهای گفته شده و سناریوهای پیش رو هم در حال تغییر هستند.
در تمام این رویکردها و روشها همواره باید یک ارزیابی از آینده برنامه و کاربران آن داشته باشیم.
اگر برای سیستم عامل خاصی اپلیکیشنی ارائه می کنید باید همیشه با وابستگی به آن پلتفرم حرکت کنید، در نقطه مقابل هم اگر از رویکرد بین پلتفرمی پیروی کنید باید در نظر داشته باشید که با تغییر قوانین و پروتکلهای یک فروشگاه یا پلتفرم ممکن است اپلیکیشن مورد نظر برای آن پلتفرم دیگر کارآمد نباشد. پس باید همواره براساس نوع کار و پروژه رویکرد خود را برگزینید نه براساس کارکرد ساختاری یک اپلیکیشن.